package com.lyf.scm.plan.domain.service;


import com.lyf.scm.plan.api.dto.BaseAreaInfoDTO;
import com.lyf.scm.plan.api.dto.BaseSkuInfoDTO;
import com.lyf.scm.plan.api.dto.UnitRateQueryDTO;
import com.lyf.scm.plan.domain.remote.basedata.dto.ChannelDTO;
import com.lyf.scm.plan.domain.remote.basedata.dto.StoreDTO;
import com.lyf.scm.plan.domain.remote.item.dto.SkuPriceDTO;
import com.lyf.scm.plan.domain.remote.item.dto.SkuUnitDTO;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * redis缓存
 *
 * @author wangchlei
 * @date 2020/09/20
 */
public interface RedisCacheService {

    /**
     * 清空门店缓存
     *
     * @param
     * @return void
     **/
    void deleteStores();

    void deleteDirectStores();

    /**
     * 获取所有渠道信息
     *
     * @param
     * @return {@link Map<ChannelDTO>}
     **/
    Map<String, ChannelDTO> getAllChannelInfo();

    /**
     * 获取门店信息
     *
     * @param codes
     * @return {@link Map<StoreDTO>}
     **/
    Map<String, StoreDTO> getStoreInfoByCodes(List<String> codes);

    /**
     * 获取sku
     *
     * @param skuPriceDTOs
     * @return {@link Map<BigDecimal>}
     **/
    Map<String, BigDecimal> getSkuAveragePrice(List<SkuPriceDTO> skuPriceDTOs);

    /**
     * @param skuCodes
     * @return {@link Map<BaseSkuInfoDTO>}
     **/
    Map<String, BaseSkuInfoDTO> getCategoryInfoBySkuCodes(List<String> skuCodes);

    Map<String, SkuUnitDTO> getUnitConversionRatio(List<UnitRateQueryDTO> unitRateQueryDTOs);

    Map<String, BaseAreaInfoDTO> getAreaInfo(List<String> codes, Integer type);

    Map<String, StoreDTO> getDeliverWarehouse();
}
